/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package domen;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.util.LinkedList;

/**
 *
 * @author Ivan Ivic
 */
public class Vezbac implements OpstiDomenskiObjekat, Serializable {
    private int vezbacID, visina, tezina;
    private String ime, prezime;
    private Date datumRodjenja;
    private double bodyfat;
    private Trening trening;
    private int brojDolazaka;

    public Vezbac() {
    }

    public Vezbac(int visina, int tezina, String ime, String prezime, Date datumRodjenja, double bodyfat) {
        this.visina = visina;
        this.tezina = tezina;
        this.ime = ime;
        this.prezime = prezime;
        this.datumRodjenja = datumRodjenja;
        this.bodyfat = bodyfat;
    }

    

    public int getBrojDolazaka() {
        return brojDolazaka;
    }

    public void setBrojDolazaka(int brojDolazaka) {
        if (brojDolazaka <= trening.getBrojTermina())
            this.brojDolazaka = brojDolazaka;
        else
        {
            this.brojDolazaka = 0;
            System.out.println("Broj dolazaka vezbaca ne moze biti veci od uplacenog broja termina! Broj dolazaka postavljen na 0");
        }
    }
        
    public Trening getTrening() {
        return trening;
    }

    public void setTrening(Trening trening) {
        this.trening = trening;
    }
   
    public double getBodyfat() {
        return bodyfat;
    }

    public void setBodyfat(double bodyfat) {
        this.bodyfat = bodyfat;
    }

    public Date getDatumRodjenja() {
        return datumRodjenja;
    }

    public void setDatumRodjenja(Date datumRodjenja) {
        this.datumRodjenja = datumRodjenja;
    }

    public String getIme() {
        return ime;
    }

    public void setIme(String ime) {
        this.ime = ime;
    }

    public String getPrezime() {
        return prezime;
    }

    public void setPrezime(String prezime) {
        this.prezime = prezime;
    }

    public int getTezina() {
        return tezina;
    }

    public void setTezina(int tezina) {
        this.tezina = tezina;
    }

    public int getVezbacID() {
        return vezbacID;
    }

    public void setVezbacID(int vezbacID) {
        this.vezbacID = vezbacID;
    }

    public int getVisina() {
        return visina;
    }

    public void setVisina(int visina) {
        this.visina = visina;
    }

    @Override
    public String toString() {
        return getIme() + " " + getPrezime();
    }
    

    public String vratiNazivTabele() {
        return "TVezbac";
    }

    public String vratiNazivKoloneTabele() {
        return "VezbacID, Ime, Prezime, DatumRodjenja, Visina, Tezina, Bodyfat";
    }

    public String vratiVrednostiZaInsert() {
         return getVezbacID() + ",'" + getIme() + "','" + getPrezime() + "', #" + getDatumRodjenja() + "#," + getVisina() + "," + getTezina() + "," + getBodyfat();
    }

    public String vratiUslovZaIndentifikacijuUBazi() {
        return String.valueOf(getVezbacID());
    }

    public String vratiJedinstveniIdentifikator() {
        return "VezbacID";
    }

    public String vratiUslovPretrage() {
        //return "Ime='" + getIme() + "' OR Prezime='" + getPrezime() + "' OR DatumRodjenja=#" + getDatumRodjenja() + "# OR Visina=" + getVisina() + " OR Tezina=" + getTezina() + " OR Bodyfat=" + getBodyfat();
        return "Prezime ='" + getPrezime() + "' OR VezbacID=" + getVezbacID();
    }

    public String postaviVrednostiAtributa() {
        return " Ime='" + getIme() + "',Prezime='" + getPrezime() + "',DatumRodjenja=#" + getDatumRodjenja() + "#,Visina=" + getVisina() + ",Tezina=" + getTezina() + ",Bodyfat=" + getBodyfat();
    }

    public LinkedList<OpstiDomenskiObjekat> konvertujResultSetUListu(ResultSet rs) {
        LinkedList<OpstiDomenskiObjekat> listaVezbaca = new LinkedList<OpstiDomenskiObjekat>();

        try
        {
            while (rs.next())
            {
                Vezbac v = new Vezbac();
                v.setVezbacID(rs.getInt(1));
                v.setIme(rs.getString(2));
                v.setPrezime(rs.getString(3));
                v.setDatumRodjenja(rs.getDate(4));
                v.setVisina(rs.getInt(5));
                v.setTezina(rs.getInt(6));
                v.setBodyfat(rs.getDouble(7));
                listaVezbaca.add(v);
            }
            return listaVezbaca;
        } catch (SQLException e)
        {
            e.printStackTrace();
            return null;
        }
        
    }

    public String vratiNazivDodatneTabele() {
        return "TTreningZaVezbaca";
    }

    public String vratiVrednostiZaInsertDodatneTabele() {
        return getVezbacID() + ",'" + getTrening().getSifraTreninga() + "'";
    }

    public OpstiDomenskiObjekat konvertujResultSetUObjekat(ResultSet rs) {
        Trening t = new Trening();        
        try
        {
            rs.next();
            t.setSifraTreninga(rs.getString("SifraTreninga"));
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        return t;
    }

}
